﻿//添加按钮 1.0.0 user:chenyy
(function ($) {
    $.fn.addBtn = function (opts) {
        var option = $.extend({
            html: '',
            addMain: ".addMain", //被添加的主体
            addDiv: ".J_addDiv", //添加部分
            closeBtn: '.J_closeBtn', //删除按钮
            idName: '', //id前缀
            selectList: [], //选择框的list
            optionL: '', //option列表
            initData: false,
            callback: function () {
                return true;
            }, //回调
            check: function () {
                return true;
            } //运行前的检测
        }, opts);
        return this.each(function () {
            var $this = $(this);
            //... 个人代码部分
            function init() {
                bind();
                //option.callback();
                if (option.initData) {
                    initData();
                }
            }

            //生产数据
            function getData() {
                var addDiv = $(option.addDiv);
                var list = [];
                var data = {};
                var $this = null;
                addDiv.each(function () {
                    $this = $(this);
                    data = {};
                    data.Name = $.trim($this.find('.J_input1').val());
                    data.Count = $.trim($this.find('.J_input2').val());
                    data.UnitPrice = $.trim($this.find('.J_input3').val());
                    data.Total = $.trim($this.find('.J_input4').val());
                    data.Times = $.trim($this.find('.J_input5').val());
                    list.push(data);
                });
                $("#getData").val(JSON.stringify(list));
            }

            function initData() {
                var htmlCollection = $.map($.parseJSON(option.initData), function (e) {
                    var html = $(getHtml());
                    html.find('.J_input1').val(e.Name);
                    html.find('.J_input2').val(e.Count);
                    html.find('.J_input3').val(e.UnitPrice);
                    html.find('.J_input4').val(e.Total);
                    html.find('.J_input5').val(e.Times);
                    return html.get(0);
                });
                $(option.addMain).append(htmlCollection);
                closeBind();
                getData();
            }

            function bind() {
                var _this = this;
                $this.bind('click', function () {
                    var html = getHtml();
                    $(option.addMain).append(html);
                    closeBind();
                    getData();
                });
            }

            function getHtml() {
                html = option.html;
                html = html.replace(/\[optionL\]/g, option.optionL);
                return html;
            }

            function closeBind() {
                $('.J_closeBtn').off('click').on('click', function () {
                    $(this).parents(option.addDiv).remove();
                    getData();
                });

                $(option.addDiv).find('input').off('blur').on('blur', function () {
                    getData();
                });

                //$(option.addDiv).find('select').off('change').on("change", function () {
                //    getData();
                //});
            }
            init();
        });
    }
})(jQuery);
